package com.fay.designPattern.principles.metrics;

import lombok.AllArgsConstructor;
import org.apache.commons.lang.StringUtils;

/**
 * @Title: metrics api for outside
 * @Description: 处理api的metrics的，至少要涉及业务处理和数据存储，持有其依赖
 *                接受外界的什么信息来处理，那么需要定一套模子来接收数据。
 * @Author Fay Wang
 * @Date 2022/4/3 19:41
 * @Version 1.0
 */
@AllArgsConstructor
public class MetricsCollector {
    private MetricsStorage metricsStorage;

    public void setMetricsStorage(MetricsStorage metricsStorage) {
        this.metricsStorage = metricsStorage;
    }

    // 用一个函数代替了最小原型中的两个函数
    public void recordRequest(RequestInfo requestInfo) {
        if (requestInfo == null || StringUtils.isBlank(requestInfo.getApiName())) {
            return;
        }
        metricsStorage.saveRequestInfo(requestInfo);
    }
}
